package main

import "fmt"

/*
给定一个只包括 '('，')'，'{'，'}'，'['，']'的字符串，判断字符串是否有效。
有效字符串需满足：
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串
*/

//思路：
// 遇到 左括号，写入，遇到右括号 减去 ，同时使用写入数字表示不同的括号类型

func isValid(s string) bool {
    bit := make([]int ,0)
    for _,value :=range s{
        switch value {
			case '(':
					bit =append(bit,1)
			case '{':
					bit =append(bit, 2)
			case '[':
					bit=append(bit,3)
			case '}':
					if  len(bit)-1 < 0 || bit[len(bit)-1] != 2 {
						 return false
					}
					bit =bit[:len(bit)-1]
			case ']':

					if len(bit)-1 < 0 || bit[len(bit)-1] != 3 {
						 return false
					}
					bit = bit[:len(bit)-1]
			case ')':
					if  len(bit)-1 < 0 || bit[len(bit)-1] != 1 {
						 return false
					}
					bit = bit[:len(bit)-1]
        }
    }

    if len(bit) != 0{
    	return false
	}

	return true
}

func main(){
	fmt.Println(isValid("()"))
}